home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Games of Daze
/
Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso
/
x2ftp
/
msdos
/
utils
/
dtu140
/
dtu-api.asm
next >
Wrap
Assembly Source File
|
1995-03-13
|
6KB
|
157 lines
;=============================================================================
; Some example code for the DTU API...
;=============================================================================
Code Segment
Assume Cs:Code,Ds:Code
Org 100h
.386
Start:
Mov Ah,9
Mov Dx,Offset Welcome
Int 21h ;Print the Welcome String...
Sub Ax,Ax ;Start checking Multiplex Number 0
CheckLoop:
Push Ax ;Save current Mux Number
Int 2Dh ;Installation check
Or Al,Al ;Is there a program installed here ?
Pop Ax ;Restore Mux Number
Jnz ProgramInstalled ;Program installed -> Jump
NextCheck:
Inc Ah ;No program installed -> Try next Mux
Jnz CheckLoop ;Loop max. 256 times...
DTUNotInstalled:
Mov Ah,9 ;DTU not found at one of 256 Mux's
Mov Dx,Offset NoDTUStr
Int 21h ;Print DTU not installed
Int 20h ;End program...
ProgramInstalled:
Pusha ;Save all registers
Mov Es,Dx ;Set ES:DI to program signature
Mov Si,Offset DTUSignature ;Compare to DTU's signature
Mov Cx,16
Rep Cmpsb ;Compare strings
Popa ;Restore all registers
Jnz NextCheck ;Strings not equal -> Scan next program
DTUFound:
Mov [DTUNumber],Ah ;Save Multiplex Number
Mov Ah,9
Mov Dx,Offset DTUFoundStr
Int 21h ;Print DTU found
Mov Al,Ch ;Move Major Version Number into AL
Call PrintBCD ;Print Major Version Number
Mov Ah,2 ;Subfunction 2: Print character
Mov Dl,'.' ;The character...
Int 21h ;Print...
Mov Al,Cl ;Move Minor Version Number into AL
Call PrintBCD ;Print Minor Version Number
Mov Ah,9
Mov Dx,Offset ExtAPIStr
Int 21h
Mov Ah,[DTUNumber]
Mov Al,10h
Int 2Dh
Mov Al,Bl
Mov [ExtendedAPI],Al
Call PrintYesNo
Cmp [ExtendedAPI],1
Jnz NoExtAPIInfo
Mov Ah,9
Mov Dx,Offset NumUnitsStr
Int 21h
Mov Ah,[DTUNumber]
Mov Al,11h
Sub Bl,Bl
Int 2Dh ;Get # of units
Mov Al,Bl
Movzx Cx,Al ;Load number of units in CX
Call PrintBCD
Mov Ah,[DTUNumber]
Mov Al,11h
Mov Bl,1
Mov Dx,Cs
Mov Di,Offset UnitBuf
Int 2Dh
Mov Ah,9
Mov Dx,Offset InstallStr
Int 21h
Mov Si,Offset UnitBuf
PrintLoop:
Lodsb
Call PrintBCD
Mov Ah,2
Mov Dl,' '
Int 21h
Loop PrintLoop
NoExtAPIInfo:
Mov Ah,9
Mov Dx,Offset Int3Str
Int 21h
Int 03h ;Call DTU through INT 03
Cmp [ExtendedAPI],1
Jnz NoExtAPIPopup
Mov Ah,9
Mov Dx,Offset Sub3Str
Int 21h
Mov Ah,[DTUNumber]
Mov Al,3
Int 2Dh ;Call DTU through INT 2D/03
NoExtAPIPopup:
Mov Ah,9
Mov Dx,Offset EndStr
Int 21h
Int 20h
PrintYesNo Proc Near
Pusha
Mov Dx,Offset YesNo
Not Al
And Al,1
Shl Al,2
Sub Ah,Ah
Add Dx,Ax
Mov Ah,9
Int 21h
Popa
Ret
Endp
PrintBCD Proc Near
Pusha ;Save all registers
Push Ax ;Save AX
Shr Al,4 ;Move upper BCD Number into low bits
Add Al,'0' ;Add '0' to become number in ASCII
Mov Ah,2 ;Print character with DOS Function 2
Mov Dl,Al
Int 21h ;Print...
Pop Ax ;Restore AX
And Al,0Fh ;Mask out lower BCD Number
Add Al,'0' ;Add '0' to become number in ASCII
Mov Ah,2 ;Print character with DOS Function 2
Mov Dl,Al
Int 21h ;Print...
Popa ;Restore all registers
Ret ;Return...
Endp
Welcome Db 13,10,'DTown Utilities API Example Program.',13,10,13,10,'$'
NoDTUStr Db 'DTU is not installed...',13,10,'$'
DTUFoundStr Db 'DTU installed: DTU Version : $'
ExtAPIStr Db 13,10,' Extended API Installed : $'
NumUnitsStr Db 13,10,' Total number of units : $'
InstallStr Db 13,10,' Units installed : $'
Int3Str Db 13,10,' Calling DTU with INT 03h...$'
Sub3Str Db 13,10,' Calling DTU with INT 2Dh, Function 03h...$'
EndStr Db 13,10,13,10,'DTU tested OK...',13,10,13,10,'$'
ExtendedAPI Db 0 ;1=Extended API installed, 0=not...
HandlerOfs Dw 0 ;Stored Pop-up Handler Offset
HandlerSeg Dw 0 ;Stored Pop-up Handler Segment
DTUNumber Db 0 ;Multiplex Number for DTU
DTUSignature Db 'DTown SDDTU ' ;DTU's Signature
UnitBuf Db 100 Dup(0)
YesNo Db 'Yes$No$'
Code Ends
End Start